package belf.migrate.api.table.schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 描述关系数据库一列的元数据的额外信息，如默认值、EXTRA信息（如ON UPDATE），这些信息是默认的JDBC API获取不到的。
 * 这些信息用于补充{@link ColumnMetaData}。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ColumnExtra implements Serializable {
    private static final long serialVersionUID = -3L;

    /** 字段默认值，可以是数值，也可以是字符串。这里统一用字符串来表示 */
    private String defaultValue;

    /** 对于java.sql.Date/Time/Timestamp类型字段，extra信息表示ON UPDATE，需要同步到目标端 */
    private String extra;

    /** 栏目的评论信息 */
    private String comment;

    /** 对于java.sql.Date/Time/Timestamp类型字段，该属性表示时间的精度。各种数据库对时间精度实现不一样。 */
    private int dateTimePrecision;
}
